// Map 对象保存键值对，并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。
let myMap = new Map();

let keyObj = {};
let keyFunc = function() {};
let keyString = 'a string';

// 添加键
myMap.set(keyString, "和键'a string'关联的值");
myMap.set(keyObj, "和键keyObj关联的值");
myMap.set(keyFunc, "和键keyFunc关联的值");

const map1 = myMap.size; // 3
console.log('map1=' + map1);

// 读取值
const map2 = myMap.get(keyString);    // "和键'a string'关联的值"
console.log('map2:' + map2)
const map3 = myMap.get(keyObj);       // "和键keyObj关联的值"
console.log('map3:' + map3);
const map4 = myMap.get(keyFunc);      // "和键keyFunc关联的值"
console.log('map4:' + map4);

myMap.get('a string');   // "和键'a string'关联的值"
                         // 因为keyString === 'a string'
myMap.get({});           // undefined, 因为keyObj !== {}
myMap.get(function() {}); // undefined, 因为keyFunc !== function () {}